import request from '@/utils/request'

// 接口类型定义
export interface Article {
  id: string // 文章ID
  stem: string  // 文章标题
  content: string // 文章内容
  avatar: string  // 作者头像
  creator: string  // 作者名称
  createdAt: string  // 创建时间
  likeCount: number // 点赞数
  views: number  // 浏览数
  likeFlag: boolean  // 是否已点赞
  collectFlag: boolean  // 是否已收藏
}

export interface ArticleListParams {
  current: number
  sorter?: string | null
  pageSize?: number
}

export interface ArticleListResponse {
  data: {
    rows: Article[]
    pageTotal: number
    total: number
  }
}

export interface ArticleDetailResponse {
  data: Article
}

export interface OptListParams {
  page?: number
  pageSize?: number
  optType?: number
}

export interface OptListResponse {
  data: {
    rows: Article[]
    pageTotal: number
    total: number
  }
}

// 获取面经列表
export const getArticlesAPI = (params: ArticleListParams): Promise<ArticleListResponse> => {
  return request.get('/h5/interview/query', {
    params: {
      current: params.current,  // 当前页
      sorter: params.sorter,  // 排序字段 =>  传"weight_desc" 获取 推荐， "不传" 获取 最新
      pageSize: params.pageSize || 10  // 每页条数
    },
    // headers: {
    //   Authorization: `Bearer ${getToken()}`
    // }
  })
}

// 获取单个面经详情
export const getArticleDetailAPI = (id: string): Promise<ArticleDetailResponse> => {
  return request.get('/h5/interview/show', {
    params: { id: id }
  })
}

// 喜欢文章
export const updateLikeAPI = (id: string) => {
  return request.post('/h5/interview/opt', {
    id: id,
    optType: 1 // 喜欢
  })
}

// 收藏文章
export const updateCollectAPI = (id: string) => {
  return request.post('/h5/interview/opt', {
    id: id,
    optType: 2 // 收藏
  })
}

// 获取收藏列表
export const getArticlesCollectAPI = (params: OptListParams): Promise<OptListResponse> => {
  return request.get('/h5/interview/opt/list', {
    params: {
      page: params.page || 1,  // 当前页
      pageSize: params.pageSize || 5,  // 每页条数
      optType: 2  // 操作类型：1-点赞，2-收藏
    },
  })
}

// 获取我的喜欢
export const getArticlesLikeAPI = (params: OptListParams): Promise<OptListResponse> => {
  return request.get('/h5/interview/opt/list', {
    params: {
      page: params.page, // 当前页
      pageSize: params.pageSize || 5, // 可选
      optType: 1 // 表示喜欢
    }
  })
}
